<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        function Star(name, age) {
            // 1. 公共的属性写到构造函数里面
            this.name = name
            this.age = age
            // this.sing = function () {
            //     console.log('唱歌')
            // }
        }
        // 2. 公共的方法写到原型对象上  节约内存
        Star.prototype.sing = function () {
            console.log('唱歌')
        }

        const kk = new Star('坤坤', 18)
        const jl = new Star('杰伦', 20)
        kk.sing()
        jl.sing()

        // sing是公共的方法，在内存中的地址是相同的
        console.log(kk.sing === jl.sing) // true

        // 以后一般情况下
        // 公共的属性写到构造函数里面
        // 公共的方法放到原型对象上

        // 原型对象就是单独的一个区域，专门存放公共的方法
    </script>
</body>

</html>